<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>代理模式</title>
</head>
<body>
	<h1>代理模式</h1>
</body>
<script type="text/javascript">

    // 比如说现在有一个对象的实例化很慢的话，不能在网页加载的时候立即完成，我们可以为其创建一个虚拟代理，让他把该对象的实例推迟到需要的时候。


    // 先申明一个奶茶妹对象
    var TeaAndMilkGirl = function(name) {
        this.name = name;
    };
    // 这是京东ceo先生
    var Ceo = function(girl) {
        this.girl = girl;
        // 送结婚礼物 给奶茶妹
        this.sendMarriageRing = function(ring) {
            console.log("Hi " + this.girl.name + ", ceo送你一个礼物：" + ring);
        }
    };
    // 京东ceo的经纪人是代理，来代替送
    var ProxyObj = function(girl){
        this.girl = girl;
        // 经纪人代理送礼物给奶茶妹
        this.sendGift = function(gift) {
            // 代理模式负责本体对象实例化
            (new Ceo(this.girl)).sendMarriageRing(gift);
        }
    };
    // 初始化
    var proxy = new ProxyObj(new TeaAndMilkGirl("奶茶妹"));
    proxy.sendGift("结婚戒"); // Hi 奶茶妹, ceo送你一个礼物：结婚戒

</script>
</html>